package com.bbzn.device.client.dto.ct.request;

import com.alibaba.fastjson.JSONObject;
import lombok.Getter;
import lombok.Setter;

import java.io.Serializable;

/**
 * @Author wulongbo
 * @Date 2021/9/13 14:07
 * @Version 1.0
 */

@Getter
@Setter
public class RequestCreateCommand implements Serializable {

    private static final long serialVersionUID = 7411130061294820449L;

    /**
     *  1: MQTT协议透传的content内容：
     *     {
     * 	      payload:指令内容 格式为Json传Json格式内容
     *     }
     *      样例：
     *     {
     * 	     "payload": {
     * 		    "status": 1,
     * 		    "temperature": 26
     *        }
     *     }
     *
     *
     */

    /**
     *  2: TCP和LWM2M协议透传的content内容：
     *    {
     * 	      payload:指令内容,数据格式为十六进制时需要填十六进制字符串,
     * 	      dataType:数据类型：1字符串，2十六进制
     *    }
     *    样例：
     *    {
     * 		 "dataType":1,
     * 	     "payload": "5365ab32d"
     *    }
     */

    /**
     *  3: MQTT、LWM2M协议非透传和T-Link协议的content内容:
     *   {
     * 		 params：指令参数
     * 		 serviceIdentifier：服务定义时的服务标识
     *   }
     * 	  样例：
     *    {
     * 		 "params":
     *       {
     * 			"status": 1,
     * 			"temperature": 26
     *       },
     * 		 "serviceIdentifier": "eeeeee"
     *    }
     *
     */

    /**
     *  4: JT/T808协议的content内容
     *    {
     * 		jtMessageId:消息Id ,
     * 		jtMessageType: 消息类型,
     * 		dataType:数据类型：1字符串，2十六进制 ,
     * 		payload:指令内容,数据格式为十六进制时需要填十六进制字符串
     *    }
     *    注：jtMessageId字段为0x8900时，jtMessageType字段必填
     *    jtMessageType字段：
     *                0x00,GNSS模块详细定位数据;
     *                0x0B,道路运输证IC卡信息;
     *                0x41,串口1透传;
     *                0x42,串口2透传;
     *                0xF0-0xFF,用户自定义透传;
     *    样例：
     *    {
     * 		"jtMessageId": "0x8900",
     * 		"jtMessageType": "0x00",
     * 		"dataType": 1,
     * 		"payload": "112233"*
     * 	  }
     */

    /**
     * 	5: 南向云的content内容：
     *    {
     *        payload:指令内容 格式为Json传Json格式内容
     *    }
     *    样例：
     *     {
     *        "payload": {
     *        "status": 1,
     *        "temperature": 26
     *        }
     *     }
     *
     */
    private JSONObject content;

    /**
     * 设备ID，（当指令级别为设备级时必填，为设备组级时则不填）
     */
    private String deviceId;

    /**
     * 操作者，必填
     */
    private String operator;

    /**
     *  产品ID，必填
     */
    private Integer productId;

    /**
     * 设备指令缓存时长，选填。单位：秒，取值范围：0-864000。
     * 不携带则默认值：7200。如不需缓存请填0。
     */
    private Integer ttl;

    /**
     * 设备组ID，选填，当指令级别为设备级，
     * deviceId不为空，deviceGroupId为空；
     * 当指令级别为设备组级，deviceId为空，deviceGroupId不为空。
     */
    private Integer deviceGroupId;
}
